// uiJqConfig 配置
angular.module('app').factory('uiJqConfig',function(rest,apiUrl,user){
  return {
    /* dataTable 的公共设置 */
    'dataTable':{
        /**
         * 滚动余界是指DataTable在当前页面还有多少条数据可供滚动时自动加载新的数据，你可能希望指定一个足够大的余界，以便滚动加载数据的操作对用户来说是平滑的，同时也不会大到加载比需要的多的多的数据
         */
        "iScrollLoadGap": 50,
        /**
         * 设置为 true 时，dataTable变成下拉刷新数据。
         */
        "bScrollInfinite": false,
        "bScrollCollapse": false,
        "sScrollY": "9999px",
        /**
         * 开启排序功能
         */
        "bSort": false,
        /**
         * 设置使用Ajax方式调用的服务器端的处理方法或者Ajax数据源的HTTP请求方式
         */
        "sServerMethod": "POST",
        /**
         * DataTables载入数据时，是否显示‘进度’提示
         */
        "bProcessing": true,
        /**
         * 是否启动服务器端数据导入
         */
        "bServerSide": true,
        /**
         * 是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
         */
        "bStateSave": true,
        /**
         * 更改显示记录数选项
         */
        "aLengthMenu": [10, 20, 50, 100],
        /**
         * 默认显示的记录数
         */
        "iDisplayLength": 10,
        /**
         * 是否自适应宽度
         */
        "bAutoWidth": false,
        /**
         * 是否开启DataTables的高度自适应，当数据条数不够分页数据条数的时候，插件高度是否随数据条数而改变
         */
        "bScrollCollapse": true,
        /**
         * 是否显示（应用）分页器
         */
        "bPaginate": true,
        /**
         * 是否显示页脚信息，DataTables插件左下角显示记录数
         */
        "bInfo": true,
        /**
         * 是否启动过滤、搜索功能
         */
        "bFilter": false,
        /**
         * 当使用Ajax数据源或者服务器端处理的时候，DataTable会默认搜索aaData属性作为数据源，该选项允许变更数据源的名称，你可以使用JavaScript的点号对象表示法去访问多级网状数据源
         */
        "sAjaxDataProp": "data",
        /**
         * 该参数用来向DataTable指定加载的外部数据源（如果想使用现有的数据，请使用aData），可以简单的提供一个可以用来获得数据url或者JSON对象，该对象必须包含aaData，作为表格的数据源
         */
        "sAjaxSource": apiUrl,
        /**
         * 这是用于定义DataTable布局的一个强大的属性，包括分页，显示多少条数据和搜索。具体使用方法参考：http://blog.csdn.net/lisky119/article/details/25884197
         */
        // "sDom":"",
        /**
         * sScrollXInner ：当横向滚动可用的时候，该属性可以用来强制DataTable的宽度比需要的更长，比如你需要表格彼此相隔适宜，该变量可以用来使表格变大，而且强制滚动，该该属性可以是css设置，或者一个数字（作为像素量度来使用）
         */
        "sScrollX": "100%",
        "sScrollXInner": "100%",
        /**
         * 国际化配置
         */
        "oLanguage": {
            "sProcessing": "正在获取数据，请稍后...",
            "sLengthMenu": "显示 _MENU_ 条",
            "sZeroRecords": "没有您要搜索的内容",
            // "sInfo": "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
            "sInfo": "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
            "sInfoEmpty": "记录数为0",
            // "sInfoFiltered": "(全部记录数 _MAX_ 条)",
            "sInfoFiltered": "",
            "sInfoPostFix": "",
            "sSearch": "搜索",
            "sUrl": "",
            "oPaginate": {
                "sFirst": "第一页",
                "sPrevious": "上一页",
                "sNext": "下一页",
                "sLast": "最后一页"
            }
        },
        /**
         * 服务器端，数据回调处理 。自定义ajax请求
         * @param  {[type]} sSource    [description]
         * @param  {[type]} aData      [description]
         * @param  {[type]} fnCallback [description]
         * @return {[type]}            [description]
         */
         "fnServerData": function(sSource,aData,fnCallback,dataTableObject) {
           var obj = dataTableObject.oAjaxData,_baseParams = {
             'landlordId':user.get('landlordId'),
             // 'landlordId':'ec1a71e8-622d-45b4-b256-2b037ea64458',
             'pageIndex':obj.iDisplayStart / obj.iDisplayLength + 1,
             'pageSize':obj.iDisplayLength
           };
           $("html, body").animate({ scrollTop: 0+"px" }, "fast");
           var __data = angular.extend({},_baseParams,obj.queryParams);
           /*
            rest.java({
                    url: '/decorate-service/decorate/api/service/getCreditLine.json',
                    data: {
                        originalId: 'f3d4c3b68c7935fcb018b4fa0cabfb2d'
                    },
                    success: function (data) {
                    }
                }, basetype(pay, settlment, monthly)
                 , reqtype(post, get)
            );

            rest.java({...}); javaUrl + post

            rest.java({...}, undefined, 'get'); javaUrl + get 

            rest.java({...}, 'pay'); javaPayUrl + post
        */







        
           rest.post({
             methodId: sSource,
             data: __data,
           
             success: function(data){                  
               if("0" == data.code){
                 var data = {
                     'aaData': data.res.data.rows,
                     'sEcho': obj.sEcho,
                     'iTotalDisplayRecords': data.res.data.page.totalCount,
                     'iTotalRecords': data.res.data.page.totalCount,
                     'success': data.code == "0" ? true : false
                 };
                 fnCallback(data);
                 $(dataTableObject.nScrollBody).css('overflow', 'visible');
               }
             }
           })
         }
    }
  }
});
